package com.ophiux.micro.core.application;

import java.util.List;

import com.ophiux.micro.core.domain.page.MyPage;
import com.ophiux.micro.core.domain.page.Page;
import com.ophiux.utils.parser.Parser;
import com.ophiux.utils.parser.entity.EntityTranslator;

/**
 * 分页相应装配器
 * @author chenh
 *
 */
public class PageResponseAssembly<T> {

	/**
	 * 相应分页模型装配
	 * @param source	装配源
	 * @param target	分页里面的目标内容
	 * @return
	 */
	public static <S , T> Page<T> pageAssembly(Page<S> source , Class<T> target){

		int totalCount = source.getTotalCount();
		
		int pageIndex = source.getCurrentPageIndex();
		int pageSize = source.getPageSize();
		
		Page<T> respage = new MyPage<T>(pageIndex, pageSize , totalCount);
		
		//查询数据   --根据分页配置查询
		List<S> sourceContent = source.getPageContent();
		
		//内容转换
		Parser parser = new EntityTranslator();
		List<T> targetContent = parser.parse(sourceContent, target);
		
		//同时设置分页内容及实际量
		respage.setPageContent(targetContent);
		
		return respage;
		
	}
	
	/**
	 * 相应分页模型装配
	 * @param source	装配源
	 * @param target	分页里面的目标内容
	 * @return
	 */
	public static <S , T> Page<T> pageAssembly(Page<S> source , List<T> targetContent){

		int totalCount = source.getTotalCount();
		
		int pageIndex = source.getCurrentPageIndex();
		int pageSize = source.getPageSize();
		
		Page<T> respage = new MyPage<T>(pageIndex, pageSize , totalCount);
		
		//同时设置分页内容及实际量
		respage.setPageContent(targetContent);
		
		return respage;
		
	}

}
